“People react positively when things are clear and understandable.” Dieter Rams
The best applications
react
to the user's workflow
not
the other way around
SWT, OSGi &
Modularity
in Medical Imaging

JUAN NARVAEZ

SOFTWARE ARCHITECT
Know
Know your solution's target audience
Usability
Make your audience want to use your solution
Reliability
Make your solution fault tolerant
Simplicity
Make your solution intuitive, for both consumers and developers
start with the
Visuals
of your solution
Why?
“As far as the customer is concerned, the interface is the product.” Jef Raskin
Long Hours
60+ hrs/week
16,000+ procedures per user per year
(staring at the same application)
Long Hours
60+ hrs/week
16,000+ procedures per user per year
(staring at the same application)
Long Hours
60+ hrs/week
16,000+ procedures per user per year
(staring at the same application)
Use
SWT
&
OSGi
for modular purpose built solutions
How?
“Before software can be reusable it first has to be usable.” Ralph Johnson
Modular Components

Create reusable SWT widgets

Tailors the look and feel to the purpose of the solution

Employ OSGi services when possible

Allows for specific assemblies and rapid development

Native widgets provide a natural look and feel

Provides the ability to build a professional looking solution quickly

Integrates with JFace for easy MVC development

Limiting for low-light workflows in imaging

Provide analagous widget set that is skinnable

Allows the solution to be tailored to any visual requirements

Focus on the low light workflow

Native widgets provide a natural look and feel

Provides the ability to build a professional looking solution quickly

Integrates with JFace for easy MVC development

Limiting for low-light workflows in imaging

Provide analagous widget set that is skinnable

Allows the solution to be tailored to any visual requirements

Focus on the low light workflow

Native widgets provide a natural look and feel

Provides the ability to build a professional looking solution quickly

Integrates with JFace for easy MVC development

Limiting for low-light workflows in imaging

Provide analagous widget set that is skinnable

Allows the solution to be tailored to any visual requirements

Focus on the low light workflow

Native widgets provide a natural look and feel

Provides the ability to build a professional looking solution quickly

Integrates with JFace for easy MVC development

Limiting for low-light workflows in imaging

Provide analagous widget set that is skinnable

Allows the solution to be tailored to any visual requirements

Focus on the low light workflow

Native widgets provide a natural look and feel

Provides the ability to build a professional looking solution quickly

Integrates with JFace for easy MVC development

Limiting for low-light workflows in imaging

Provide analagous widget set that is skinnable

Allows the solution to be tailored to any visual requirements

Focus on the low light workflow

Native widgets provide a natural look and feel

Provides the ability to build a professional looking solution quickly

Integrates with JFace for easy MVC development

Limiting for low-light workflows in imaging

Provide analagous widget set that is skinnable

Allows the solution to be tailored to any visual requirements

Focus on the low light workflow

Native widgets provide a natural look and feel

Provides the ability to build a professional looking solution quickly

Integrates with JFace for easy MVC development

Limiting for low-light workflows in imaging

Provide analagous widget set that is skinnable

Allows the solution to be tailored to any visual requirements

Focus on the low light workflow

Modular Components

Create reusable SWT widgets

Tailors the look and feel to the purpose of the solution

Employ OSGi services when possible

Allows for specific assemblies and rapid development

Modular Components

Create reusable SWT widgets

Tailors the look and feel to the purpose of the solution

Employ OSGi services when possible

Allows for specific assemblies and rapid development

Inject different implementations at runtime

Use same services and interfaces on both clients and servers

Different assemblies just contain different service implementations based on the use case
Inject different implementations at runtime

Use same services and interfaces on both clients and servers

Different assemblies just contain different service implementations based on the use case
Inject different implementations at runtime

Use same services and interfaces on both clients and servers

Different assemblies just contain different service implementations based on the use case
Modular Components

Create reusable SWT widgets

Tailors the look and feel to the purpose of the solution

Employ OSGi services when possible

Allows for specific assemblies and rapid development

What?
“The behavior you’re seeing is the behavior you’ve designed for (whether intentional or not).” Joshua Porter
Rethink
The Layout
What the user can do
How it responds
How the solution is delivered
Rethink
The Layout
What the user can do
How it responds
How the solution is delivered
Rethink
The Layout
What the user can do
How it responds
How the solution is delivered
Rethink
The Layout
What the user can do
How it responds
How the solution is delivered
Rethink
The Layout
What the user can do
How it responds
How the solution is delivered
Create the
basics
Skinnable Widgetset


Skinnable Widgetset


Skinnable Widgetset


Skinnable Widgetset


Skinnable Widgetset


Skinnable Widgetset


Use the Workbench to handle the layout

Use the widgets to provide the look

Put it
Together
Use the Workbench to handle the layout

Use the widgets to provide the look

Put it
Together
Use the Workbench to handle the layout

Use the widgets to provide the look

Put it
Together
go from
Rigid

to
Fluid


Great Solution
Now What?
Diagnostic Imaging requires heavy duty hardware
($10,000+ Monitors, and multiple at that!)
Clinicians, Nurses, Surgeons, etc. want the same tools and capabilities
(Without the access to the hardware)
(and they don't want to install anything)
Need a way to
Deliver
The same solution to the enterprise
Citrix?

VM Ware?
Require plugins

Network intensive for imaging

(Up to 3MB per second!)
Use the modules we already have

Build on what the other guys do

(Remote Desktop Services)
Use the modules we already have

Build on what the other guys do

(Remote Desktop Services)
Use the modules we already have

Build on what the other guys do

(Remote Desktop Services)
So what does it
Look
Like?
Now we can run on
Anything
with a browser!
Third Parties can
Contribute
Modules for specialized functionality

(we've got an SDK!)
So what do
You
Think?
Engineering Health at Cerner

Juan Narvaez on GitHub

Cerner.com

Written in JavaScript/HTML5/CSS3 with the help of impress.js



“Design with the end in mind.”